<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/sysctl.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/sysctl.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * sysctl.h: General linux system control interface</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> *</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> * Begun 24 March 1995, Stephen Tweedie</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> *</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> ****************************************************************</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> ****************************************************************</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> **</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> **  WARNING:</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> **  The values in this file are exported to user space via </span>
<a name="11" /><span class="True">      11:</span> <span class="k"> **  the sysctl() binary interface.  Do *NOT* change the</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> **  numbering of any existing values here, and do not change</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> **  any numbers within any one set of values.  If you have to</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> **  redefine an existing interface, use a new number for it.</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> **  The kernel will then return -ENOTDIR to any application using</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> **  the old binary interface.</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> **</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> ****************************************************************</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> ****************************************************************</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> */</span>
<a name="21" /><span class="True">      21:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1NZU0NUTF9IXzA_"><span class="b">_LINUX_SYSCTL_H</span></a>
<a name="22" /><span class="True">      22:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX1NZU0NUTF9IXzA_"><span class="b">_LINUX_SYSCTL_H</span></a>
<a name="23" /><span class="True">      23:</span> 
<a name="24" /><span class="True">      24:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">rcupdate</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="26" /><span class="True">      26:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">wait</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="27" /><span class="True">      27:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">rbtree</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="28" /><span class="True">      28:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">uapi</span><span class="f">/</span><span class="b">linux</span><span class="f">/</span><span class="b">sysctl</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="29" /><span class="True">      29:</span> 
<a name="30" /><span class="True">      30:</span> <span class="k">/* For the /proc/sys support */</span>
<a name="31" /><span class="True">      31:</span> <span class="m">struct</span> <span class="b">ctl_table</span><span class="f">;</span>
<a name="32" /><span class="True">      32:</span> <span class="m">struct</span> <span class="b">nsproxy</span><span class="f">;</span>
<a name="33" /><span class="True">      33:</span> <span class="m">struct</span> <span class="b">ctl_table_root</span><span class="f">;</span>
<a name="34" /><span class="True">      34:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span><span class="f">;</span>
<a name="35" /><span class="True">      35:</span> <span class="m">struct</span> <span class="b">ctl_dir</span><span class="f">;</span>
<a name="36" /><span class="True">      36:</span> 
<a name="37" /><span class="True">      37:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">ctl_table</span> <span class="b">ctl_table</span><span class="f">;</span>
<a name="38" /><span class="True">      38:</span> 
<a name="39" /><span class="True">      39:</span> <span class="m">typedef</span> <span class="m">int</span> <span class="b">proc_handler</span> <span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">ctl</span><span class="f">,</span> <span class="m">int</span> <span class="b">write</span><span class="f">,</span>
<a name="40" /><span class="True">      40:</span>               <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">buffer</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="b">lenp</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="b">ppos</span><span class="f">)</span><span class="f">;</span>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_dostring</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="43" /><span class="True">      43:</span>              <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="44" /><span class="True">      44:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_dointvec</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="45" /><span class="True">      45:</span>              <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_dointvec_minmax</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="47" /><span class="True">      47:</span>                 <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_dointvec_jiffies</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="49" /><span class="True">      49:</span>                  <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="50" /><span class="True">      50:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_dointvec_userhz_jiffies</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="51" /><span class="True">      51:</span>                     <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="52" /><span class="True">      52:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_dointvec_ms_jiffies</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="53" /><span class="True">      53:</span>                     <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="54" /><span class="True">      54:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_doulongvec_minmax</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="55" /><span class="True">      55:</span>                   <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="56" /><span class="True">      56:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_doulongvec_ms_jiffies_minmax</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="57" /><span class="True">      57:</span>                       <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="58" /><span class="True">      58:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">proc_do_large_bitmap</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="f">,</span> <span class="m">int</span><span class="f">,</span>
<a name="59" /><span class="True">      59:</span>                 <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="f">,</span> <span class="b">size_t</span> <span class="f">*</span><span class="f">,</span> <span class="b">loff_t</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> 
<a name="61" /><span class="True">      61:</span> <span class="k">/*</span>
<a name="62" /><span class="True">      62:</span> <span class="k"> * Register a set of sysctl names by calling register_sysctl_table</span>
<a name="63" /><span class="True">      63:</span> <span class="k"> * with an initialised array of struct ctl_table&apos;s.  An entry with </span>
<a name="64" /><span class="True">      64:</span> <span class="k"> * NULL procname terminates the table.  table-&gt;de will be</span>
<a name="65" /><span class="True">      65:</span> <span class="k"> * set up by the registration and need not be initialised in advance.</span>
<a name="66" /><span class="True">      66:</span> <span class="k"> *</span>
<a name="67" /><span class="True">      67:</span> <span class="k"> * sysctl names can be mirrored automatically under /proc/sys.  The</span>
<a name="68" /><span class="True">      68:</span> <span class="k"> * procname supplied controls /proc naming.</span>
<a name="69" /><span class="True">      69:</span> <span class="k"> *</span>
<a name="70" /><span class="True">      70:</span> <span class="k"> * The table&apos;s mode will be honoured both for sys_sysctl(2) and</span>
<a name="71" /><span class="True">      71:</span> <span class="k"> * proc-fs access.</span>
<a name="72" /><span class="True">      72:</span> <span class="k"> *</span>
<a name="73" /><span class="True">      73:</span> <span class="k"> * Leaf nodes in the sysctl tree will be represented by a single file</span>
<a name="74" /><span class="True">      74:</span> <span class="k"> * under /proc; non-leaf nodes will be represented by directories.  A</span>
<a name="75" /><span class="True">      75:</span> <span class="k"> * null procname disables /proc mirroring at this node.</span>
<a name="76" /><span class="True">      76:</span> <span class="k"> *</span>
<a name="77" /><span class="True">      77:</span> <span class="k"> * sysctl(2) can automatically manage read and write requests through</span>
<a name="78" /><span class="True">      78:</span> <span class="k"> * the sysctl table.  The data and maxlen fields of the ctl_table</span>
<a name="79" /><span class="True">      79:</span> <span class="k"> * struct enable minimal validation of the values being written to be</span>
<a name="80" /><span class="True">      80:</span> <span class="k"> * performed, and the mode field allows minimal authentication.</span>
<a name="81" /><span class="True">      81:</span> <span class="k"> * </span>
<a name="82" /><span class="True">      82:</span> <span class="k"> * There must be a proc_handler routine for any terminal nodes</span>
<a name="83" /><span class="True">      83:</span> <span class="k"> * mirrored under /proc/sys (non-terminals are handled by a built-in</span>
<a name="84" /><span class="True">      84:</span> <span class="k"> * directory handler).  Several default handlers are available to</span>
<a name="85" /><span class="True">      85:</span> <span class="k"> * cover common cases.</span>
<a name="86" /><span class="True">      86:</span> <span class="k"> */</span>
<a name="87" /><span class="True">      87:</span> 
<a name="88" /><span class="True">      88:</span> <span class="k">/* Support for userspace poll() to watch for changes */</span>
<a name="89" /><span class="True">      89:</span> <span class="m">struct</span> <span class="b">ctl_table_poll</span> <span class="f">{</span>
<a name="90" /><span class="True">      90:</span>     <span class="b">atomic_t</span> <span class="b">event</span><span class="f">;</span>
<a name="91" /><span class="True">      91:</span>     <span class="b">wait_queue_head_t</span> <span class="b">wait</span><span class="f">;</span>
<a name="92" /><span class="True">      92:</span> <span class="f">}</span><span class="f">;</span>
<a name="93" /><span class="True">      93:</span> 
<a name="94" /><span class="True">      94:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="f">*</span><span class="b">proc_sys_poll_event</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_poll</span> <span class="f">*</span><span class="b">poll</span><span class="f">)</span>
<a name="95" /><span class="True">      95:</span> <span class="f">{</span>
<a name="96" /><span class="True">      96:</span>     <span class="m">return</span> <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="b">atomic_read</span><span class="f">(</span><span class="f">&amp;</span><span class="b">poll</span><span class="f">-&gt;</span><span class="b">event</span><span class="f">)</span><span class="f">;</span>
<a name="97" /><span class="True">      97:</span> <span class="f">}</span>
<a name="98" /><span class="True">      98:</span> 
<a name="99" /><span class="True">      99:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19DVExfVEFCTEVfUE9MTF9JTklUSUFMSVpFUl8w"><span class="b">__CTL_TABLE_POLL_INITIALIZER</span></a><span class="f">(</span><span class="b">name</span><span class="f">)</span> <span class="f">{</span>                \
<a name="100" /><span class="True">     100:</span>     <span class="f">.</span><span class="b">event</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_QVRPTUlDX0lOSVRfMA__"><span class="b">ATOMIC_INIT</span></a><span class="f">(</span><span class="c">0</span><span class="f">)</span><span class="f">,</span>                    \
<a name="101" /><span class="True">     101:</span>     <span class="f">.</span><span class="b">wait</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_X19XQUlUX1FVRVVFX0hFQURfSU5JVElBTElaRVJfMA__"><span class="b">__WAIT_QUEUE_HEAD_INITIALIZER</span></a><span class="f">(</span><span class="b">name</span><span class="f">.</span><span class="b">wait</span><span class="f">)</span> <span class="f">}</span>
<a name="102" /><span class="True">     102:</span> 
<a name="103" /><span class="True">     103:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_REVGSU5FX0NUTF9UQUJMRV9QT0xMXzA_"><span class="b">DEFINE_CTL_TABLE_POLL</span></a><span class="f">(</span><span class="b">name</span><span class="f">)</span>                    \
<a name="104" /><span class="True">     104:</span>     <span class="m">struct</span> <span class="b">ctl_table_poll</span> <span class="b">name</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_X19DVExfVEFCTEVfUE9MTF9JTklUSUFMSVpFUl8w"><span class="b">__CTL_TABLE_POLL_INITIALIZER</span></a><span class="f">(</span><span class="b">name</span><span class="f">)</span>
<a name="105" /><span class="True">     105:</span> 
<a name="106" /><span class="True">     106:</span> <span class="k">/* A sysctl table is an array of struct ctl_table: */</span>
<a name="107" /><span class="True">     107:</span> <span class="m">struct</span> <span class="b">ctl_table</span> 
<a name="108" /><span class="True">     108:</span> <span class="f">{</span>
<a name="109" /><span class="True">     109:</span>     <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">procname</span><span class="f">;</span>        <span class="k">/* Text ID for /proc/sys, or zero */</span>
<a name="110" /><span class="True">     110:</span>     <span class="m">void</span> <span class="f">*</span><span class="b">data</span><span class="f">;</span>
<a name="111" /><span class="True">     111:</span>     <span class="m">int</span> <span class="b">maxlen</span><span class="f">;</span>
<a name="112" /><span class="True">     112:</span>     <span class="b">umode_t</span> <span class="b">mode</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span>     <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">child</span><span class="f">;</span>    <span class="k">/* Deprecated */</span>
<a name="114" /><span class="True">     114:</span>     <span class="b">proc_handler</span> <span class="f">*</span><span class="b">proc_handler</span><span class="f">;</span>    <span class="k">/* Callback for text formatting */</span>
<a name="115" /><span class="True">     115:</span>     <span class="m">struct</span> <span class="b">ctl_table_poll</span> <span class="f">*</span><span class="b">poll</span><span class="f">;</span>
<a name="116" /><span class="True">     116:</span>     <span class="m">void</span> <span class="f">*</span><span class="b">extra1</span><span class="f">;</span>
<a name="117" /><span class="True">     117:</span>     <span class="m">void</span> <span class="f">*</span><span class="b">extra2</span><span class="f">;</span>
<a name="118" /><span class="True">     118:</span> <span class="f">}</span><span class="f">;</span>
<a name="119" /><span class="True">     119:</span> 
<a name="120" /><span class="True">     120:</span> <span class="m">struct</span> <span class="b">ctl_node</span> <span class="f">{</span>
<a name="121" /><span class="True">     121:</span>     <span class="m">struct</span> <span class="b">rb_node</span> <span class="b">node</span><span class="f">;</span>
<a name="122" /><span class="True">     122:</span>     <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">header</span><span class="f">;</span>
<a name="123" /><span class="True">     123:</span> <span class="f">}</span><span class="f">;</span>
<a name="124" /><span class="True">     124:</span> 
<a name="125" /><span class="True">     125:</span> <span class="k">/* struct ctl_table_header is used to maintain dynamic lists of</span>
<a name="126" /><span class="True">     126:</span> <span class="k">   struct ctl_table trees. */</span>
<a name="127" /><span class="True">     127:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span>
<a name="128" /><span class="True">     128:</span> <span class="f">{</span>
<a name="129" /><span class="True">     129:</span>     <span class="m">union</span> <span class="f">{</span>
<a name="130" /><span class="True">     130:</span>         <span class="m">struct</span> <span class="f">{</span>
<a name="131" /><span class="True">     131:</span>             <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">ctl_table</span><span class="f">;</span>
<a name="132" /><span class="True">     132:</span>             <span class="m">int</span> <span class="b">used</span><span class="f">;</span>
<a name="133" /><span class="True">     133:</span>             <span class="m">int</span> <span class="b">count</span><span class="f">;</span>
<a name="134" /><span class="True">     134:</span>             <span class="m">int</span> <span class="b">nreg</span><span class="f">;</span>
<a name="135" /><span class="True">     135:</span>         <span class="f">}</span><span class="f">;</span>
<a name="136" /><span class="True">     136:</span>         <span class="m">struct</span> <a href="cpu.c_macros_ref.html#_cmN1X2hlYWRfMA__"><span class="b">rcu_head</span></a> <span class="b">rcu</span><span class="f">;</span>
<a name="137" /><span class="True">     137:</span>     <span class="f">}</span><span class="f">;</span>
<a name="138" /><span class="True">     138:</span>     <span class="m">struct</span> <span class="b">completion</span> <span class="f">*</span><span class="b">unregistering</span><span class="f">;</span>
<a name="139" /><span class="True">     139:</span>     <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">ctl_table_arg</span><span class="f">;</span>
<a name="140" /><span class="True">     140:</span>     <span class="m">struct</span> <span class="b">ctl_table_root</span> <span class="f">*</span><span class="b">root</span><span class="f">;</span>
<a name="141" /><span class="True">     141:</span>     <span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="b">set</span><span class="f">;</span>
<a name="142" /><span class="True">     142:</span>     <span class="m">struct</span> <span class="b">ctl_dir</span> <span class="f">*</span><span class="b">parent</span><span class="f">;</span>
<a name="143" /><span class="True">     143:</span>     <span class="m">struct</span> <span class="b">ctl_node</span> <span class="f">*</span><span class="b">node</span><span class="f">;</span>
<a name="144" /><span class="True">     144:</span> <span class="f">}</span><span class="f">;</span>
<a name="145" /><span class="True">     145:</span> 
<a name="146" /><span class="True">     146:</span> <span class="m">struct</span> <span class="b">ctl_dir</span> <span class="f">{</span>
<a name="147" /><span class="True">     147:</span>     <span class="k">/* Header must be at the start of ctl_dir */</span>
<a name="148" /><span class="True">     148:</span>     <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="b">header</span><span class="f">;</span>
<a name="149" /><span class="True">     149:</span>     <span class="m">struct</span> <span class="b">rb_root</span> <span class="b">root</span><span class="f">;</span>
<a name="150" /><span class="True">     150:</span> <span class="f">}</span><span class="f">;</span>
<a name="151" /><span class="True">     151:</span> 
<a name="152" /><span class="True">     152:</span> <span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">{</span>
<a name="153" /><span class="True">     153:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">is_seen</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="154" /><span class="True">     154:</span>     <span class="m">struct</span> <span class="b">ctl_dir</span> <span class="b">dir</span><span class="f">;</span>
<a name="155" /><span class="True">     155:</span> <span class="f">}</span><span class="f">;</span>
<a name="156" /><span class="True">     156:</span> 
<a name="157" /><span class="True">     157:</span> <span class="m">struct</span> <span class="b">ctl_table_root</span> <span class="f">{</span>
<a name="158" /><span class="True">     158:</span>     <span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="b">default_set</span><span class="f">;</span>
<a name="159" /><span class="True">     159:</span>     <span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="f">(</span><span class="f">*</span><span class="b">lookup</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_root</span> <span class="f">*</span><span class="b">root</span><span class="f">,</span>
<a name="160" /><span class="True">     160:</span>                        <span class="m">struct</span> <span class="b">nsproxy</span> <span class="f">*</span><span class="b">namespaces</span><span class="f">)</span><span class="f">;</span>
<a name="161" /><span class="True">     161:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">permissions</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">head</span><span class="f">,</span> <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="162" /><span class="True">     162:</span> <span class="f">}</span><span class="f">;</span>
<a name="163" /><span class="True">     163:</span> 
<a name="164" /><span class="True">     164:</span> <span class="k">/* struct ctl_path describes where in the hierarchy a table is added */</span>
<a name="165" /><span class="True">     165:</span> <span class="m">struct</span> <span class="b">ctl_path</span> <span class="f">{</span>
<a name="166" /><span class="True">     166:</span>     <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">procname</span><span class="f">;</span>
<a name="167" /><span class="True">     167:</span> <span class="f">}</span><span class="f">;</span>
<a name="168" /><span class="True">     168:</span> 
<a name="169" /><span class="True">     169:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NZU0NUTF8w"><span class="b">CONFIG_SYSCTL</span></a>
<a name="170" /><span class="True">     170:</span> 
<a name="171" /><span class="True">     171:</span> <span class="m">void</span> <span class="b">proc_sys_poll_notify</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_poll</span> <span class="f">*</span><span class="b">poll</span><span class="f">)</span><span class="f">;</span>
<a name="172" /><span class="True">     172:</span> 
<a name="173" /><span class="True">     173:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">setup_sysctl_set</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span>
<a name="174" /><span class="True">     174:</span>     <span class="m">struct</span> <span class="b">ctl_table_root</span> <span class="f">*</span><span class="b">root</span><span class="f">,</span>
<a name="175" /><span class="True">     175:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">is_seen</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="176" /><span class="True">     176:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">retire_sysctl_set</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="b">set</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="True">     177:</span> 
<a name="178" /><span class="True">     178:</span> <span class="m">void</span> <span class="b">register_sysctl_root</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_root</span> <span class="f">*</span><span class="b">root</span><span class="f">)</span><span class="f">;</span>
<a name="179" /><span class="True">     179:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">__register_sysctl_table</span><span class="f">(</span>
<a name="180" /><span class="True">     180:</span>     <span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="b">set</span><span class="f">,</span>
<a name="181" /><span class="True">     181:</span>     <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">path</span><span class="f">,</span> <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="182" /><span class="True">     182:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">__register_sysctl_paths</span><span class="f">(</span>
<a name="183" /><span class="True">     183:</span>     <span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="b">set</span><span class="f">,</span>
<a name="184" /><span class="True">     184:</span>     <span class="m">const</span> <span class="m">struct</span> <span class="b">ctl_path</span> <span class="f">*</span><span class="b">path</span><span class="f">,</span> <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="185" /><span class="True">     185:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">register_sysctl</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">path</span><span class="f">,</span> <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="186" /><span class="True">     186:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">register_sysctl_table</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span> <span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="187" /><span class="True">     187:</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">register_sysctl_paths</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">ctl_path</span> <span class="f">*</span><span class="b">path</span><span class="f">,</span>
<a name="188" /><span class="True">     188:</span>                         <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="189" /><span class="True">     189:</span> 
<a name="190" /><span class="True">     190:</span> <span class="m">void</span> <span class="b">unregister_sysctl_table</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span> <span class="b">table</span><span class="f">)</span><span class="f">;</span>
<a name="191" /><span class="True">     191:</span> 
<a name="192" /><span class="True">     192:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">sysctl_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="193" /><span class="False">     193:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* CONFIG_SYSCTL */</span>
<a name="194" /><span class="False">     194:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">register_sysctl_table</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span> <span class="b">table</span><span class="f">)</span>
<a name="195" /><span class="False">     195:</span> <span class="f">{</span>
<a name="196" /><span class="False">     196:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="197" /><span class="False">     197:</span> <span class="f">}</span>
<a name="198" /><span class="False">     198:</span> 
<a name="199" /><span class="False">     199:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span><span class="b">register_sysctl_paths</span><span class="f">(</span>
<a name="200" /><span class="False">     200:</span>             <span class="m">const</span> <span class="m">struct</span> <span class="b">ctl_path</span> <span class="f">*</span><span class="b">path</span><span class="f">,</span> <span class="m">struct</span> <span class="b">ctl_table</span> <span class="f">*</span><span class="b">table</span><span class="f">)</span>
<a name="201" /><span class="False">     201:</span> <span class="f">{</span>
<a name="202" /><span class="False">     202:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="203" /><span class="False">     203:</span> <span class="f">}</span>
<a name="204" /><span class="False">     204:</span> 
<a name="205" /><span class="False">     205:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">unregister_sysctl_table</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_header</span> <span class="f">*</span> <span class="b">table</span><span class="f">)</span>
<a name="206" /><span class="False">     206:</span> <span class="f">{</span>
<a name="207" /><span class="False">     207:</span> <span class="f">}</span>
<a name="208" /><span class="False">     208:</span> 
<a name="209" /><span class="False">     209:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">setup_sysctl_set</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="b">p</span><span class="f">,</span>
<a name="210" /><span class="False">     210:</span>     <span class="m">struct</span> <span class="b">ctl_table_root</span> <span class="f">*</span><span class="b">root</span><span class="f">,</span>
<a name="211" /><span class="False">     211:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">is_seen</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">ctl_table_set</span> <span class="f">*</span><span class="f">)</span><span class="f">)</span>
<a name="212" /><span class="False">     212:</span> <span class="f">{</span>
<a name="213" /><span class="False">     213:</span> <span class="f">}</span>
<a name="214" /><span class="False">     214:</span> 
<a name="215" /><span class="True">     215:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_SYSCTL */</span>
<a name="216" /><span class="True">     216:</span> 
<a name="217" /><span class="True">     217:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _LINUX_SYSCTL_H */</span>
<a name="218" /><span class="True">     218:</span> </pre>
  </body>
</html>
